﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model;

namespace DataAccess
{
     public static class AccessoADatos
    {

         public static Persona insertarPersona(Persona persona)
        {
            SeguridadEntities contexto = new  SeguridadEntities();
            contexto.AddToPersona(persona);
            contexto.SaveChanges();
            return persona;
        }

         public static Usuario insertarUsuario(Usuario usuario)
         {
             SeguridadEntities contexto = new SeguridadEntities();
             contexto.AddToUsuario(usuario);
             contexto.SaveChanges();
             return usuario;
         }
         public static VidaDelPass insertarPas(VidaDelPass nuevoVida)
         {
             SeguridadEntities contexto = new SeguridadEntities();
             contexto.AddToVidaDelPass(nuevoVida);
             contexto.SaveChanges();
             return nuevoVida;
         }

         public static Usuario ObtenerUsuario(String nombreUsuario)
         {
             SeguridadEntities contexto = new SeguridadEntities();
             //contexto.Connection.Open();
             var usuario = (from e in contexto.Usuario
                            where e.NombreDeUsuario == nombreUsuario
                            select e).Single();
             return usuario;
         }

         public static Usuario ObtenerUsuarioPorCiPersona(long ciPersona)
         {
             SeguridadEntities contexto = new SeguridadEntities();
             //contexto.Connection.Open();
             var usuario = (from e in contexto.Usuario
                            where e.CIPersona == ciPersona
                            select e).Single();
             return usuario;
         }

         public static List<VidaDelPass> obtenerVidaDelPass()
         {
             SeguridadEntities contexto = new SeguridadEntities();
             var vidaPss = (from e in contexto.VidaDelPass
                            select e);
             var allTiempos = vidaPss.ToList();
             return allTiempos;
         }

         public static List<Persona> obtenerPersonasYCuentas(int estado)
         {
             SeguridadEntities context = new SeguridadEntities();
             var query = from elem in context.Persona 
                         join it in context.Usuario on elem.CI equals it.CIPersona
                         where it.Estado == estado
                         select elem;
             var cuentas = query.ToList();
             return cuentas;
         }

         public static Persona obtenerPersonasPorNombreUsuario(string nombreUsuario)
         {
             SeguridadEntities context = new SeguridadEntities();
             var query = (from elem in context.Persona
                         join it in context.Usuario on elem.CI equals it.CIPersona
                         where it.NombreDeUsuario == nombreUsuario
                         select elem).Single();

             return query;
         }

         public static Usuario modificarUsuario(Usuario nuevo)
         {
             SeguridadEntities contexto = new SeguridadEntities();
             var usuario = (from e in contexto.Usuario
                            where e.NombreDeUsuario == nuevo.NombreDeUsuario
                            select e).Single();
             usuario.Contraseña = nuevo.Contraseña;
             usuario.Estado = nuevo.Estado;
             contexto.SaveChanges();
             return usuario;
         }

         public static Usuario desactivarUsuario(Usuario nuevo)
         {
             SeguridadEntities contexto = new SeguridadEntities();
             var usuario = (from e in contexto.Usuario
                            where e.NombreDeUsuario == nuevo.NombreDeUsuario
                            select e).Single();
             usuario.Estado = nuevo.Estado;
             contexto.SaveChanges();
             return usuario;
         }
    }
}
